package com.hibernate.batch;

import java.util.Iterator;
import java.util.List;

import org.hibernate.Query;
import org.hibernate.classic.Session;
import org.junit.Test;

import com.hibernate.domain.Student;
import com.hibernate.utils.HibernateUtil;

/**
 * hibernate之分页操作测试类
 * @author LC
 *
 */
public class DisPageTest extends HibernateUtil {
	
	/**
	 * 分页操作：hibernate的分页是跨数据库的，因为其是完全的ORM框架
	 */
	@Test
	public void testDisPage() {
		Session session = sessionFactory.openSession() ;
		Query query = session.createQuery("from Student") ;
		/**
		 * 当前页的第一行在集合中的位置
		 */
		query.setFirstResult(0) ;
		/**
		 * 每页显示的行数
		 */
		query.setMaxResults(5) ;
		List<Student> list = query.list() ;
		for (Student student : list) {
			System.out.println(student);
		}
		session.close() ;
	}
	
	/**
	 * query.list()与query.iterator()方法的区别
	 * 		1、是否操作二级缓存
	 * 		2、是否操作查询缓存
	 * 		3、怎么发出sql语句等
	 */
	@Test
	public void testQueryIterator() {
		Session session = sessionFactory.openSession() ;
		Query query = session.createQuery("from Student") ;
		Iterator iterate = query.iterate() ;
		while(iterate.hasNext()) {
			Student student = (Student) iterate.next() ;
			System.out.println(student);
		}
		session.close() ;
	}

}
